//*********************************************************
//
//    Copyright (c) Microsoft. All rights reserved.
//    This code is licensed under the Apache License, Version 2.0.
//    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
//    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
//    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
//    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//********************************************************* 

using System;

namespace Microsoft.TridentWordAddIn.Common
{
    /// <summary>
    /// Enumerate for Controls
    /// </summary>
    public enum ControlKey
    {
        /// <summary>
        /// ConnectionDropDown
        /// </summary>
        ConnectionDropDown,

        /// <summary>
        /// DashboardButton
        /// </summary>
        DashboardButton,

        /// <summary>
        /// ViewAssociationButton
        /// </summary>
        ViewAssociationButton,

        /// <summary>
        /// AssociateWorkflowButton
        /// </summary>
        AssociateWorkflowButton,

        /// <summary>
        /// InsertTridentLinkButton
        /// </summary>
        InsertTridentLinkButton,

        /// <summary>
        /// ProtectDocumentButton
        /// </summary>
        ProtectDocumentButton,

        /// <summary>
        /// RerunWorkflowButton
        /// </summary>
        RerunWorkflowButton,

        /// <summary>
        /// ConnectionsButton
        /// </summary>
        ConnectionsButton
    }

    /// <summary>
    /// Enumerate for TaskPane docking position
    /// </summary>
    [FlagsAttribute]
    public enum TaskPaneDockPositions
    {
        /// <summary>
        /// Floating, not docked
        /// </summary>
        Floating = 0,

        /// <summary>
        /// Top of the window
        /// </summary>
        Top = 1,

        /// <summary>
        /// Right side of the window
        /// </summary>
        Right = 2,

        /// <summary>
        /// Bottom of the window
        /// </summary>
        Bottom = 4,

        /// <summary>
        /// Left side of the window
        /// </summary>
        Left = 8
    }

    /// <summary>
    /// The states a job can be in.
    /// </summary>
    public enum WorkflowJobStatus
    {
        /// <summary>
        /// Unknown Job Status
        /// </summary>
        Unknown,

        /// <summary>
        /// Submitted, not started
        /// </summary>
        Pending,

        /// <summary>
        /// Started, not finished
        /// </summary>
        Processing,

        /// <summary>
        /// Finished
        /// </summary>
        Finished,

        /// <summary>
        /// Failed
        /// </summary>
        Failed,

        /// <summary>
        /// Terminated
        /// </summary>
        Terminated
    }

    /// <summary>
    /// The various WorkflowParameter types
    /// </summary>
    public enum ParameterType
    {
        /// <summary>
        /// Reprsents an Input File (A matlab script, Java file etc)
        /// </summary>
        InputFile,

        /// <summary>
        /// Represents an output file (for storing data)
        /// </summary>
        OutputFile,

        /// <summary>
        /// Represents a string
        /// </summary>
        String,

        /// <summary>
        /// Represents a string collection
        /// </summary>
        StringCollection,

        /// <summary>
        /// Represents a number
        /// </summary>
        Number
    }

    /// <summary>
    /// An enumeration for the Task Panes created for the GenePattern package
    /// </summary>
    public enum TaskPaneKey
    {
        /// <summary>
        /// The default value
        /// </summary>
        Default,

        /// <summary>
        /// Represents the Dashboard task pane
        /// </summary>
        Dashboard,

        /// <summary>
        /// Represents the Associated Workflow task pane
        /// </summary>
        ViewAssociations,

        /// <summary>
        /// Represents the Connections task pane
        /// </summary>
        Connections,

        /// <summary>
        /// Represents the Associate Pipleine task pane
        /// </summary>
        AssociateWorkflow,

        /// <summary>
        /// Represents the Run task pane
        /// </summary>
        RunWorkflow,

        /// <summary>
        /// Represents the Rerun task pane
        /// </summary>
        RerunWorkflow,

        /// <summary>
        /// Represents the Insert Trident Link task pane
        /// </summary>
        InsertTridentLink,

        /// <summary>
        /// Represents the EditWorkflow task pane
        /// </summary>
        EditWorkflow
    }

    public enum LogOnStatus
    {
        Success,
        Invalid, ////incorrect username and/or password
        IOException,  ////problem connecting to the server
    }

    /// <summary>
    /// Enumerate connection Types
    /// </summary>
    public enum ConnectionType
    {
        /// <summary>
        /// Sql
        /// </summary>
        Sql,

        /// <summary>
        /// Sitka
        /// </summary>
        Sitka,

        /// <summary>
        /// Amazon WebService
        /// </summary>
        AmazonWebService,

        /// <summary>
        /// WebService
        /// </summary>
        WebService,
    }

    /// <summary>
    /// Enumurate Output types
    /// </summary>
    public enum OutputType
    {
        /// <summary>
        /// Workflow
        /// </summary>
        Workflow,

        /// <summary>
        /// DataProduct
        /// </summary>
        DataProduct
    }
}
